In the fourth generation of the Linear Tape-Open data tape format (LTO-4), a codeword quad includes two 480-byte codeword pairs interleaved with two 10-byte codeword pair headers. Each codeword pair header (also referred to herein as “header”) is comprised of a 4-byte Codeword Identifier field (bytes c0-c3) a 4-byte Write Pass Identifier field (bytes c4-c7 to identify the write pass on which a data set is written) and a 2-byte Header Parity field (bytes c8-c9) in the nature of a cyclic redundancy check (CRC). The two codeword pair headers have substantially the same contents (payload), differing only in the value of a Codeword Pair Designation sub-field of the Codeword Identifier field.
As defined in the LTO-4 specification, the header CRC is a Reed-Solomon (RS) code over Galois Field GF(256). In general, a finite field with pk elements, where p>1 is a prime number and k>0 is an integer, will be referred to as GF(pk). As illustrated in the block diagram of FIG. 1, the CRC bytes are generated by processing the header bytes sequentially through an encoder 100 based on a generator polynomial G(y)=y2+α152y+1. After processing the bytes through the encoder, the registers 102, 104 contain the CRC bytes.
If the header parity bytes are only used to detect errors in the header, they are not capable of correcting any errors which are detected. However, when the data content of a tape drive is analyzed, many codeword pair headers with bad CRC checks are seen, which may result in the codeword pair being discarded. Given the importance of data integrity, errors in the codeword pair headers cannot be tolerated. What is needed is an increased robustness against errors, in the codeword pair header.
If the two-byte redundancy in the codeword pair header is used for correcting one byte within the codeword pair header as opposed to using it as CRC to detect errors an additional mechanism is needed to detect errors in case a miscorrection occurs. Furthermore, such a solution would be inefficient because, although it can correct all 1-bit errors within a codeword pair header, it cannot correct all 2-bit error bursts within a codeword pair header. Another possible solution would be to increase the redundancy to more than 2 bytes in order to both correct errors and to detect errors after correction. However, such a solution would necessarily decrease the format efficiency. Both ‘solutions’ therefore have significant drawbacks and are not desirable.
Still another solution would be to use the common part of the payload of two headers to place additional redundancy for error control and thus to increase the error correction capability. However, such a solution has a significant drawback even when compared to the current system. For example, currently if the header of one codeword pair cannot be decoded because of media defects on the tape or for other reasons but the header of the other codeword pair in the codeword quad can be decoded, then there is sufficient information to decode both headers. Such a desirable property would be lost for tape systems if additional error-control redundancy was placed into the payload instead of rewriting all the common part of the payload.
Consequently, a need exists for the capability to both detect and correct errors in codeword pair headers without introducing new drawbacks or increasing the amount of redundancy.